<?php

declare(strict_types=1);

namespace App\Admin\Request\System\User;

use App\Admin\Service\System\SystemUserService;
use Newbie\NewbieFormRequest;


class SystemUserPasswordRequest extends NewbieFormRequest {

    /**
     * Determine if the user is authorized to make this request.
     */
    public function authorize (): bool {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     */
    public function rules (): array {
        return [
            'newPassword'              => 'require|confirmed',
            'newPassword_confirmation' => 'require',
            'oldPassword'              => ['require', function ($attribute, $value, $fail) {
                $service = container()->get(SystemUserService::class);
                $model   = $service->mapper->getModel()::find((int)user()->getId(), ['password']);
                if (!$service->mapper->checkPass($value, $model->password)) {
                    $fail(t('system.valid_password'));
                }
            }],
        ];
    }
}
